Repository navigation
rbac: scoped lane binding tests over the dt64 socket (D-DRDT-SPLIT-1 S4, tests only) - #2024
Merged
Merged
Conversation
bind_lanes records the predicate IRI each bound position resolved to; the
hot check compares it after lane_of and refuses with PredicateChanged
{ class, field } when a view reorder put another predicate at that
position. Label-only renames and reorders outside the bound positions
still admit. No hashing on the hot path.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMPJjVvasjwqhjJ6c9p
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPJjVvasjwqhjJ6c9p
18 tests bind dt64 lanes under the field mask and scope an authorization decision yields: each role binds exactly its visible requested fields, a non-allow decision binds nothing, a binding is refused through another reader's socket and scope, and row planes admit exactly each role's rows and are refused after the source moves or for another decision. Four findings pin current gaps (a binding does not know its reader; a copied scope id binds another reader's fields; admits ignores the tenant; a source move also refuses the address binding) for S4b-1 / S4b-2 to turn. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPJjVvasjwqhjJ6c9p
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
AdaWorldAPI
marked this pull request as ready for review
November 11, 2026 19:57
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This was referenced Nov 11, 2026
AdaWorldAPI
added a commit
that referenced
this pull request
Nov 11, 2026
rbac tests: a lane binding addresses one version (correct the R7 framing from #2024)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is S4 of
dr-widefieldmask-dt-classview-v1.md§5, test half only. The production steps S4b-1 and S4b-2 are not in this PR.Stacked on #2021 (S8). This branch contains #2021's commits; merge #2021 first.
What the tests show
crates/lance-graph-rbac/tests/scoped_lane_binding.rshas 18 tests. Each binds dt64 lanes under the field mask and the scope thatauthorize_scopedreturns.lance-graph-dt64is added as a dev-dependency only.Fields
Readers
Rows
Findings pinned as current behaviour
Each finding is pinned so that the step that fixes it turns the test from red to green.
field_maskof a refused decision would bind every requested field.visible_fieldsis the safe accessor.bind_lanesadmits an empty request.LaneBindingon its own does not know its reader. S4b-1 fixes this.ScopeSpec::admitsalone ignores the tenant.Evidence
cargo test -p lance-graph-rbac: 46 + 18 pass. clippy-D warningsand fmt are clean.WideFieldMask::intersectcomputesa | binstead ofa & bScopedDecision::visible_fieldsreturns the mask for every decisionEMPTYadmit_lanenever firesdr.rsnever firesMappingChangedarm inLaneBinding::checkis ignoredScopeSpec::admitsreturnsfalseThe remaining disables (A2, B6, R1, R3–R6) are edits in the test's own fixture and were not run.
Correction (2026-11-11)
An earlier version of this description listed R7 as a gap and as an open decision ("stricter than EXO-255"). That was wrong. A lane binding addresses one version of the frame, and versions are not compacted, so the bound version stays what the binding names. A source advance is a new version:
checkrefuses the old binding, and binding again against the new seal reads the new version. The test is renameda_binding_addresses_one_version_and_a_source_advance_is_read_by_binding_againand now also asserts the rebind, in the follow-up PR.Open decision
This point is recorded for the operator; this PR does not implement it.
Scopein the lane socket or sits beside it, what the seal binds, and where the issuer lives.Generated by Claude Code